package com.zhuifeng.orders.service;

import java.util.List;

import com.zhuifeng.common.core.domain.R;
import com.zhuifeng.orders.domain.Orders;
import com.zhuifeng.orders.domain.OrdersEcho;
import com.zhuifeng.orders.domain.SubMitOrders;
import com.zhuifeng.product.domain.ProductRultAttrCenter;

/**
 * 订单Service接口
 * 
 * @author zhuifeng
 * @date 2022-08-18
 */
public interface IOrdersService 
{
    /**
     * 查询订单
     * 
     * @param ordersId 订单主键
     * @return 订单
     */
    public Orders selectOrdersByOrdersId(String ordersId);

    /**
     * 查询订单列表
     * 
     * @param orders 订单
     * @return 订单集合
     */
    public List<Orders> selectOrdersList(Orders orders);

    /**
     * 新增订单
     * 
     * @param orders 订单
     * @return 结果
     */
    public int insertOrders(Orders orders);

    /**
     * 修改订单
     * 
     * @param orders 订单
     * @return 结果
     */
    public int updateOrders(Orders orders);

    /**
     * 批量删除订单
     * 
     * @param ordersIds 需要删除的订单主键集合
     * @return 结果
     */
    public int deleteOrdersByOrdersIds(String[] ordersIds);

    /**
     * 删除订单信息
     * 
     * @param ordersId 订单主键
     * @return 结果
     */
    public int deleteOrdersByOrdersId(String ordersId);

    /**
     * 确认收货
     * @param orderId
     * @return
     */
    R confirmReceiptUpdateState(String orderId);

    /**
     * 根据id查询sku信息
     * @param productSkuId
     * @return
     */
    OrdersEcho selectProductSkuId(String productSkuId);

    /**
     * 生成令牌桶
     * @return
     */
    List<String> createToken();

    /**
     * 获取token
     * @param token
     * @return
     */
    String getToken(List<String> token);

    /**
     * 订单生成
     * @param subMitOrders
     * @return
     */
    R subMitOrdersCreate(SubMitOrders subMitOrders);

    /**
     * 确认收货
     * @param ordersIds
     * @return
     */
    int affirmReceivingOrdersByOrdersIds(String[] ordersIds);
}
